Szerkesztő:Tgr/articlehistory.js

A Wikipédiából, a szabad enciklopédiából

Megjegyzés: közzététel után frissítened kell a böngésződ gyorsítótárát, hogy lásd a változásokat.

  • Firefox / Safari: tartsd lenyomva a Shift gombot és kattints a Frissítés gombra a címsorban, vagy használd a Ctrl–F5 vagy Ctrl–R (Macen ⌘–R) billentyűkombinációt
  • Google Chrome: használd a Ctrl–Shift–R (Macen ⌘–Shift–R) billentyűkombinációt
  • Internet Explorer / Edge: tartsd nyomva a Ctrl-t, és kattints a Frissítés gombra, vagy nyomj Ctrl–F5-öt
  • Opera: Nyomj Ctrl–F5-öt
//This function adds a link to the toolbox which, when clicked, searches the talk page history
//to find events which might be relevant to the {{ArticleHistory}} template. See the talk page for more details.
//
//From [[:en:User:Dr pda/articlehistory.js]]
//
function loadXMLDoc(url,handler,id)
{
url=url+id;
// branch for native XMLHttpRequest object
if (window.XMLHttpRequest) {
var req = new XMLHttpRequest();
}
// branch for IE/Windows ActiveX version
else if (window.ActiveXObject) {
var req = new ActiveXObject("Microsoft.XMLHTTP");
}
if (req) {
req.onreadystatechange = function () {handler(req,id)};
req.open("GET", url, true);
req.send("");
}
}
 
function getArticleOldid(req,id) {
// only if req shows "loaded"
if (req.readyState == 4) {
// only if "OK"
if (req.status == 200) {
// ...processing statements go here...
         var response = req.responseXML.documentElement;
         var rv = response.getElementsByTagName('rv');
         var spannode = document.getElementById('oldid-'+id);
         spannode.innerHTML = rv[0].getAttribute('revid');
         var linode = document.getElementById(id);
         linode.onclick='';
} else {
alert("There was a problem retrieving the XML data:\n" +
req.statusText);
}
}
}
 
function getArticleOldidManual(req,id) {
// only if req shows "loaded"
if (req.readyState == 4) {
// only if "OK"
if (req.status == 200) {
// ...processing statements go here...
         var response = req.responseXML.documentElement;
         var rv = response.getElementsByTagName('rv');
         var spannode = document.getElementById('oldid-'+id);
 
         var timestamp = rv[0].getAttribute('timestamp');
         timestamp = timestamp.replace(/Z/g,'');
         var prettytimestamp = timestamp.replace(/T/,', ');
         timestamp = timestamp.replace(/[-T:]/g,'');
         var idtime = id.substr(0,4)+'-'+id.substr(4,2)+'-'+id.substr(6,2)+', '+id.substr(8,2)+':'+id.substr(10,2)+':'+id.substr(12,2);
 
         var revid = rv[0].getAttribute('revid');
 
         spannode.innerHTML = 'The last version before '+idtime+' was at '+prettytimestamp+', with an oldid of '+revid+'. Click on the links to jump to the <a href="/w/index.php?title='+articleName+'&action=history&offset='+id+'">article history</a> or <a href="/w/index.php?title='+talkName+'&action=history&offset='+id+'">talk page history</a> at this point.';
} else {
alert("There was a problem retrieving the XML data:\n" +
req.statusText);
}
}
}
 
function getHistoryMilestones(req) {
// only if req shows "loaded"
if (req.readyState == 4) {
// only if "OK"
if (req.status == 200) {
// ...processing statements go here...
         var response = req.responseXML.documentElement;
         var revList = response.getElementsByTagName('rv');
         var prettylastcomment = '';
         var lasttimestamp = '';
         var prettylasttimestamp = '';
 
if(revList.length > 0){
           for(var i=0; i<revList.length; i++){
             var comment = revList[i].getAttribute('comment');
             //strip out headers i.e. /*...*/
             prettycomment=comment.replace(/\/\*.*\*\//,'');
             comment=prettycomment.toLowerCase();
             var timestamp = revList[i].getAttribute('timestamp');
             timestamp = timestamp.replace(/Z/g,'');
             var prettytimestamp = timestamp.replace(/T/,', ');
             timestamp = timestamp.replace(/[-T:]/g,'');
 
var output = document.getElementById("article-milestones");
             if(comment.match('{{') || comment.match('\bkiemelt') || comment.match('\bmegvon') || comment.match('\btörl') || comment.match('\breferál') || comment.match(/\bkezdőlap/) ){
               var milestone = document.createElement("li");
               spanid='oldid-'+timestamp;
               milestone.innerHTML='<b>'+prettytimestamp+'</b> '+prettycomment+' <span id='+spanid+'>(oldid)</span>';
               milestone.id=timestamp;
               milestone.onclick=getArticleOldidWrapper;
               output.appendChild(milestone);
}
             prettylastcomment = prettycomment;
             lasttimestamp = timestamp;
             prettylasttimestamp = prettytimestamp;
           }
           var getmore = document.getElementById("getmore");
           getmore.innerHTML='(last entry read: <b>'+prettylasttimestamp+'</b> '+prettylastcomment+')';
//Get more milestones, if any (if not, the program won't get here again)
loadXMLDoc(talkQueryURL,getHistoryMilestones,'&rvend='+(parseInt(lasttimestamp)-1))
}
}
         else {
alert("There was a problem retrieving the XML data:\n" +
req.statusText);
}
}
}
 
function getArticleOldidWrapper(event) {
loadXMLDoc(articleQueryURL,getArticleOldid,this.id)
}
 
function manualDate(event)
{
var mydate=prompt("Enter the date for which you want the oldid","")
if (mydate!=null && mydate!=""){
var utc = Date.parse(mydate+' UTC');
var d = new Date();
d.setTime(utc);
if((d.getUTCHours()+d.getUTCMinutes()) == 0){
d.setUTCHours(23);
d.setUTCMinutes(59);
d.setUTCSeconds(59);
}
var timestamp ='';
timestamp += d.getUTCFullYear();
timestamp += (d.getUTCMonth()<10) ? '0'+(d.getUTCMonth()+1) : (d.getUTCMonth()+1);
timestamp += (d.getUTCDate()<10) ? '0'+ d.getUTCDate() : d.getUTCDate();
timestamp += (d.getUTCHours()<10) ? '0'+ d.getUTCHours() : d.getUTCHours();
timestamp += (d.getUTCMinutes()<10) ? '0'+ d.getUTCMinutes() : d.getUTCMinutes();
timestamp += (d.getUTCSeconds()<10) ? '0'+ d.getUTCSeconds() : d.getUTCSeconds();
 
var dateoldid = document.createElement("p");
dateoldid.id = 'oldid-'+timestamp;
output.parentNode.insertBefore(dateoldid,enterdate.nextSibling); 
loadXMLDoc(articleQueryURL,getArticleOldidManual,timestamp)
}
}
 
function getArticleHistory(){
 
output = document.createElement("ul");
output.id = "article-milestones";
 
var dummy = document.getElementById("siteSub");
dummy.parentNode.insertBefore(output, dummy.nextSibling);
 
var getmore = document.createElement("p");
getmore.id = 'getmore';
output.parentNode.insertBefore(getmore,output.nextSibling); 
 
enterdate = document.createElement("p");
enterdate.id = 'enterdate';
enterdate.innerHTML='<span style="background-color:lightblue;font-weight:bold;">Click here to enter a date manually</span>';
enterdate.onclick = manualDate;
output.parentNode.insertBefore(enterdate,getmore.nextSibling); 
 
var pageName = wgPageName;
articleName = (wgNamespaceNumber == 1) ? pageName.substr(5) : pageName;
talkName = 'Talk:'+articleName;
//correctly handle article name when on a Talk page archive
var archiveIndex = articleName.toLowerCase().indexOf("/archive");
articleName = (archiveIndex == -1) ? articleName : articleName.substring(0,archiveIndex);
 
//Use query.php instead of api.php since it has a limit of 200 instead of 50
//var apiHistoryQuery = '/w/api.php?action=query&prop=revisions&titles='+talkName+'&rvlimit=50&rvprop=timestamp|comment&format=xml';
 
talkQueryURL = '/w/query.php?what=revisions&titles='+talkName+'&rvlimit=200&rvcomments&format=xml';
articleQueryURL = '/w/query.php?what=revisions&titles='+articleName+'&rvlimit=200&rvcomments&format=xml&rvend=';
loadXMLDoc(talkQueryURL,getHistoryMilestones,'');
}
 
$(function () {
if(!document.forms.editform){
mw.util.addPortletLink('p-tb', 'javascript:getArticleHistory()', 'Article history', 't-article-history', 'Search Talk page history for events relevant to ArticleHistory template', '', '');
}
});